package com.gitee.huxing.course.conc.conc01.sync;

/**
 * @Description:
 * @ProjectName: JavaCourse
 * @Package: com.gitee.huxing.course.conc.cono01.sync
 * @ClassName: Thread3
 * @Author: huxing
 * @DateTime: 2021-08-20 上午11:14
 */
public class Thread3 {

    class Inner{
        private void m4t1(){
            int i = 5;
            while (i-- >0){
                System.out.println(Thread.currentThread().getName() + ": Inner.m4t1()=" + i);
                try {
                    Thread.sleep(500L);
                } catch (InterruptedException ex){
                    ex.printStackTrace();
                }
            }
        }

        private void m4t2(){
            int i = 5;
            while (i-- >0){
                System.out.println(Thread.currentThread().getName() + ": Inner.m4t2()=" + i);
                try {
                    Thread.sleep(500L);
                } catch (InterruptedException ex){
                    ex.printStackTrace();
                }
            }
        }
    }

    private void m4t1(Inner inner){
        // 对象锁
        synchronized (inner){
            inner.m4t1();
        }
    }

    private void m4t2(Inner inner){
        inner.m4t2();
    }

    public static void main(String[] args) {
        final Thread3 myt3 = new Thread3();
        final Inner inner = myt3.new Inner();
        Thread t1 = new Thread(()->myt3.m4t1(inner), "t1");
        Thread t2 = new Thread(()->myt3.m4t2(inner), "t2");
        t1.start();
        t2.start();
    }
}
